/**
 * ---------------- 定义所有菜单项 ----------------
 */
import {defineMenu} from "./router-util";

/**
 * 菜单所有属性：
 * {
 * 	id: 'role',		        // 菜单id, 必须唯一 [必填]
 * 	title: '用户中心',		// 菜单名称, 同时也是tab选项卡上显示的名称 [必填]
 * 	icon: 'el-icon-user',	// 菜单图标, 参考地址:  https://element-plus.org/zh-CN/component/icon.html#icon-collection
 * 	info: '管理所有用户',	    // 菜单详细介绍, 在菜单预览和分配权限时会有显示
 * 	path: '/role-list',	    // 菜单path，如果不写，则根据id生成
 * 	show: 'yes',			// 菜单是否显示, 取值：yes=永远显示，no=永远不显示，auth=根据权限决定是否显示，默认auth
 * 	auth: true,             // 是否需要鉴权，默认true，此值为true时，在导航守卫里需要鉴权才可通过，为 false 时将无条件通过
 * 	component: 'vue组件',    // 菜单对应的 vue 组件，
 * 	parentId: 1,			// 所属父菜单id, 如果指定了一个值, 框架在初始化时会将此菜单转移到指定菜单上
 * 	url: '',		        // 菜单url，如果指定了此值，则通过 iframe 打开页面视图
 * 	isBlank: false,		    // 是否属于外部链接, 如果为true, 则点击菜单时从新窗口打开（只在url有值时此属性才会生效）
 * 	click: function(){}		// 如果指定了此值，则点击菜单时执行一个函数
 * 	children: [			    // 指定这个菜单所有的子菜单, 子菜单可以继续指定子菜单, 至多支持四级菜单
 * 		// ....
 * 	],
 * }
 */

/**
 * 定义动态路由表：需要展现在菜单栏上的路由
 */
export const menuList = defineMenu([
    {
        id: 'bas',
        show: 'no',
        title: '身份相关',
        children: [
            { id: 'root', title: 'Root 权限（最高权限）', show: 'no', info: '当前系统的最高权限标识，请谨慎授权'},
            { id: 'in-system', title: '允许进入后台管理', show: 'no'},
        ]
    },
    {
        id: 'auth',
        title: '权限控制',
        icon: 'el-icon-Unlock',
        info: '控制 Admin 管理员对后台的访问规则',
        children: [
            {id: 'role-list', title: '角色管理', icon: 'el-icon-Unlock', component: () => import('@/sp-views/sp-role/role-list.vue')},
            {id: 'menu-list', title: '菜单管理', icon: 'el-icon-CollectionTag', component: () => import('@/sp-views/sp-role/menu-list.vue')},
            {id: 'admin-list', title: '管理员列表', icon: 'el-icon-Key', component: () => import('@/sp-views/sp-admin/admin-list.vue'), info: '控制 Admin 管理员对后台的访问规则'},
            {id: 'admin-add', title: '管理员添加', component: () => import('@/sp-views/sp-admin/admin-add.vue'), show: 'no', info: '按钮权限：决定管理员列表页是否显示 [ 管理员添加 ] 按钮'},
            {id: 'sp-admin-login', title: '管理员登录日志', icon: 'el-icon-Mouse', component: () => import('@/sp-views/sp-admin-login/sp-admin-login-list')},
        ]
    },

    {
        id: 'console',
        title: '监控中心',
        icon: 'el-icon-View',
        info: '提供 Redis、SQL、API访问日志等在线监控能力', 
        children: [
            {id: 'redis-console', title: 'Redis 监控台', icon: 'el-icon-Search', component: () => import('@/sp-views/sp-console/redis-console.vue')},
            {id: 'apilog-list', title: 'API 请求日志', icon: 'el-icon-MostlyCloudy', component: () => import('@/sp-views/sp-apilog/apilog-list.vue')},
            {id: 'sql-console', title: 'SQL 监控台', icon: 'el-icon-View', url: '${SERVER_URL}/druid/index.html'},
            {id: 'form-generator', title: '在线表单构建', show: 'no', icon: 'el-icon-View', url: 'https://mrhj.gitee.io/form-generator'},
            {id: 'sys-vc-log', title: '验证码记录', icon: 'el-icon-CollectionTag', component: () => import('@/views/sys-vc-log/sys-vc-log-list.vue')},
        ]
    },

    // sso 相关 
    {
        id: 'sys-client',
        title: '应用管理',
        icon: 'el-icon-Eleme',
        info: '管理所有可 SSO 授权的 url 地址',
        children: [
            {id: 'sys-client-list', title: '应用列表', component: () => import('@/views/sys-client/sys-client-list.vue')},
            {id: 'sys-client-add', title: '应用添加', show: 'no'},
            {id: 'sys-client-visit', title: '应用访问关系', component: () => import('@/views/sys-client-visit/sys-client-visit-list.vue')},
        ]
    },
    {
        id: 'sys-user',
        title: '用户管理',
        icon: 'el-icon-User',
        info: '管理 SSO 统一认证的 User 用户',
        children: [
            {id: 'sys-user-list', title: '用户列表', component: () => import('@/views/sys-user/sys-user-list.vue')},
            {id: 'sys-user-list-gc', title: '用户回收站', component: () => import('@/views/sys-user/sys-user-list-gc.vue')},
            {id: 'sys-login-log', title: '登录日志', component: () => import('@/views/sys-login-log/sys-login-log-list.vue')},
            {id: 'console-plate', title: '数据走势', component: () => import('@/views/sys-user-sta/console-plate.vue'), info: '无此权限的用户无法进入首页大屏'},
        ]
    },
    {
        id: 'sys-user-online',
        title: '在线用户',
        icon: 'el-icon-CollectionTag',
        info: '查看所有正在登录的 User 用户，提供踢人下线操作',
        children: [
            {id: 'sys-user-online-list', title: '在线用户', component: () => import('@/views/sys-user-online/sys-user-online-list.vue')},
        ]
    },
    
    {
        id: 'sp-config',
        title: '系统配置',
        icon: 'el-icon-Setting',
        info: '维护系统全局参数配置、User 用户同步 等',
        children: [
            {id: 'config-view-info', title: '系统信息', icon: 'el-icon-Plus', component: () => import('@/sp-views/sp-config/config-view-info.vue')},
            {id: 'config-view-server', title: '全局参数', icon: 'el-icon-Plus', component: () => import('@/sp-views/sp-config/config-view-server.vue')},
            {id: 'config-view-sync-user', title: '用户同步', icon: 'el-icon-Plus', component: () => import('@/sp-views/sp-config/config-view-sync-user.vue')},
            {id: 'config-view-vc-setting', title: '验证码防刷', icon: 'el-icon-Plus', component: () => import('@/sp-views/sp-config/config-view-vc-setting.vue')},
            {id: 'sp-config-list', title: '表格视图', icon: 'el-icon-Postcard', component: () => import('@/sp-views/sp-config/sp-config-list.vue')},
        ]
    },
    
    // 组件测试 
    {
        id: 'test',
        title: '组件测试',
        icon: 'el-icon-Scissor',
        show: 'yes',
        info: '提供 UI 表单增删改查的封装写法展示',
        children: [
            {id: 'data-list', title: '简单列表', icon: 'el-icon-DocumentRemove', show: 'yes', component: () => import('@/sp-views/test/data-list.vue')},
            {id: 'data-list2', title: '复杂列表', icon: 'el-icon-DocumentRemove', show: 'yes', component: () => import('@/sp-views/test/list-more/data-list2.vue')},
            {id: 'data-add', title: '表单提交', icon: 'el-icon-Edit', show: 'yes', component: () => import('@/sp-views/test/data-add.vue')},
            {id: 'data-info', title: '信息展示', icon: 'el-icon-Finished', show: 'yes', component: () => import('@/sp-views/test/data-info.vue')},
        ]
    },

]);

// console.log(menuList)



